package com.example.demo.model;

import com.example.demo.entity.CopyrightTradeRequestEntity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Date;

/**
 * 版权交易请求信息
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class CopyrightTradeRequestInfo {
    
    /**
     * 交易ID
     */
    private Long id;
    
    /**
     * 版权ID
     */
    private Long copyrightId;
    
    /**
     * 版权区块链ID
     */
    private String blockchainId;
    
    /**
     * 发起方地址
     */
    private String fromAddress;
    
    /**
     * 接收方地址
     */
    private String toAddress;
    
    /**
     * 请求类型：仅支持 2-转让
     */
    private Integer requestType;
    
    /**
     * 请求类型描述
     */
    private String requestTypeDesc;
    
    /**
     * 状态：0-待处理，1-已接受，2-已拒绝
     */
    private Integer status;
    
    /**
     * 状态描述
     */
    private String statusDesc;
    
    /**
     * 创建时间
     */
    private Date createTime;
    
    /**
     * 更新时间
     */
    private Date updateTime;
    
    /**
     * 备注/说明
     */
    private String remark;
    
    /**
     * 交易哈希
     */
    private String txHash;
    
    /**
     * 相关版权信息
     */
    private CopyrightInfo copyrightInfo;
    
    /**
     * 从实体创建信息对象
     */
    public static CopyrightTradeRequestInfo fromEntity(CopyrightTradeRequestEntity entity) {
        CopyrightTradeRequestInfo info = new CopyrightTradeRequestInfo();
        info.setId(entity.getId());
        info.setCopyrightId(entity.getCopyrightId());
        info.setFromAddress(entity.getFromAddress());
        info.setToAddress(entity.getToAddress());
        info.setRequestType(entity.getRequestType());
        info.setStatus(entity.getStatus());
        info.setCreateTime(entity.getCreateTime());
        info.setUpdateTime(entity.getUpdateTime());
        info.setRemark(entity.getRemark());
        info.setTxHash(entity.getTxHash());
        
        // 设置描述
        info.setRequestTypeDesc(getRequestTypeDesc(entity.getRequestType()));
        info.setStatusDesc(getStatusDesc(entity.getStatus()));
        
        return info;
    }
    
    /**
     * 获取请求类型描述
     */
    private static String getRequestTypeDesc(Integer requestType) {
        if (requestType == null) return "未知";
        switch (requestType) {
            case 2: return "转让";
            default: return "未知";
        }
    }
    
    /**
     * 获取状态描述
     */
    private static String getStatusDesc(Integer status) {
        if (status == null) return "未知";
        switch (status) {
            case 0: return "待处理";
            case 1: return "已接受";
            case 2: return "已拒绝";
            default: return "未知";
        }
    }
} 